package com.xiaoc.bulldozer.common.dao;

import java.util.List;

import com.xiaoc.bulldozer.common.dto.StatisticUserDto;
import com.xiaoc.bulldozer.common.dto.StatisticUserQueryDto;
import com.xiaoc.bulldozer.common.model.StatisticUser;
import org.apache.ibatis.annotations.Param;

/**
 * StatisticUser Mapper 接口
 *
 * @author Danfo Yam
 * 
 * @date 2018-10-15 15:40:26
 */
public interface StatisticUserMapper {

    /**
     * 根据条件查询StatisticUser数量
     
     * @param StatisticUserQueryDto
     *
     * @return 满足查询条件的记录数量
     */
    public Integer getStatisticUserCountByCondition(StatisticUserQueryDto statisticUserQueryDto);
    
    /**
     * 根据条件分页查询StatisticUser列表
     *
     * @param StatisticUserQueryDto
     *
     * @return 满足查询条件的StatisticUser列表
     */
    public List<StatisticUser> getStatisticUserListByCondition(StatisticUserQueryDto statisticUserQueryDto);
    
    /**
     * 根据条件分页查询StatisticUserDto列表
     *
     * @param StatisticUserQueryDto
     *
     * @return 满足查询条件的StatisticUserDto列表
     */
    public List<StatisticUserDto> getStatisticUserDtoListByCondition(StatisticUserQueryDto statisticUserQueryDto);
    
    /**
     * 根据Id获取StatisticUser
     * 
     * @param id
     *
     * @return StatisticUser对象
     */
    public StatisticUser getStatisticUserById(Integer id);

    /**
     * 获取所有StatisticUser列表
     * 
     * @return StatisticUser列表
     */
    public List<StatisticUser> getAllStatisticUserList();

    /**
     * 新增StatisticUser
     * 
     * @param statisticUser
     *
     * @return void
     */
    public void save(StatisticUser statisticUser);

    /**
     * 更新StatisticUser
     * 
     * @param statisticUser
     *
     * @return void
     */
    public void update(StatisticUser statisticUser);

    /**
     * 根据Id删除StatisticUser
     * 
     * @param id
     *
     * @return void
     */
    public void deleteById(Integer id);
    
    /**
     * 根据statisticUserQueryDto删除StatisticUser
     * 
     * @param statisticUserQueryDto
     *
     * @return void
     */
    public void deleteByTimePeriod(StatisticUserQueryDto statisticUserQueryDto);
    
    /**
     * 查询一段时间内，渠道经理获得的注册用户数
     */
    public List<StatisticUser> countAccount(StatisticUserQueryDto statisticUserQueryDto);
    
    /**
     * 查询一段时间内，渠道经理获得的申贷数
     */
    public List<StatisticUser> countLoan(StatisticUserQueryDto statisticUserQueryDto);
    
   
    public List<StatisticUserDto> costAccount(StatisticUserQueryDto statisticUserQueryDto);
    
    public List<StatisticUserDto> costCheck(StatisticUserQueryDto statisticUserQueryDto);
    
    public List<StatisticUserDto> costBalance(StatisticUserQueryDto statisticUserQueryDto);


    /**
     * 查询当前 满足提现金额
     * @param statisticUserQueryDto
     * @return
     */
    public List<StatisticUser> costCurrentBalance(StatisticUserQueryDto statisticUserQueryDto);

    /**
     * 获取运营成本详情
     */
    public List<StatisticUserDto> costDetail(StatisticUserQueryDto queryDto);

    /**
     *获取分销或渠道经理的基本信息
     */
    public List<StatisticUserDto> getMannagerAndDistributorMessage(StatisticUserQueryDto statisticUserQueryDto);

    public Integer getMannagerAndDistributorCount(StatisticUserQueryDto statisticUserQueryDto);

    /**
     * 获取分销或渠道经理的注册数
     */
    public List<StatisticUserDto> getMannagerAndDistributorRegisterNum(@Param("distributeIds") List<Integer> distributeIds, @Param("ids") List<Integer> ids, @Param("startTime") Long startTime, @Param("endTime") Long endTime);

    /**
     * 获取分销或渠道经理的申贷数，申贷成功数
     */
    public List<StatisticUserDto> getMannagerAndDistributorLoanNum(@Param("ids") List<Integer> ids, @Param("startTime") Long startTime, @Param("endTime") Long endTime);

    /**
     * 获取分销或渠道经理的点赞数
     */
    public List<StatisticUserDto> getMannagerAndDistributorPartnerNum(@Param("ids") List<Integer> ids, @Param("startTime") Long startTime, @Param("endTime") Long endTime);


    /**
     * 查询申贷数
     * @param statisticUserQueryDto
     * @return
     */
    public List<StatisticUserDto> getLoanCountByTime(StatisticUserQueryDto statisticUserQueryDto);
}
